
/*--------------------------------------------------------------------------
  
　ヘルプ文字を二段にするスクリプト

■概要
　各画面で、最下部にあるヘルプに表示する文字列が指定文字数以上なら、二段に分けて表示するようになります
　（初期設定では35文字以上なら二段にわけるようになっています）

　制御文字\brを追加。ヘルプ文字列に入れると、そこで改行して二段表示します
　空白を入れてMenuHelpOneLineLengthの数にしてヘルプ作るの面倒という時にでも
　（例）ヘルプの文字列を「今日は\brいい天気」にすると、1行目が35文字以内でも

　　　　 今日は
　　　　いい天気　　　　という風に二段で表示されます


■カスタマイズ
　・30文字以上で二段に分けるようにしたい
　　→設定の『ar MenuHelpOneLineLength = 35;』の35を30に変えて下さい


■変更履歴
17/ 9/24　新規作成
17/ 9/25　立ち絵スクリプトとの併用に対応
17/10/23　1.159対応
18/04/08　制御文字\brに対応
20/05/09　TextRenderer.drawScreenBottomText2LineExに引数を追加し、Y座標を補正出来るようにした
21/02/17　00LanguageChange.jsに対応


■対応バージョン
　SRPG Studio Version:1.222


■規約
・利用はSRPG Studioを使ったゲームに限ります。
・商用・非商用問いません。フリーです。
・加工等、問題ありません。どんどん改造してください。
・クレジット明記無し　OK
・再配布、転載　OK
・SRPG Studio利用規約は遵守してください。
  
--------------------------------------------------------------------------*/


(function() {

//-------------------------------------------------------
// 設定
//-------------------------------------------------------
var MenuHelpOneLineLength = 65;		// 一行に表示する最大文字数



//-------------------------------------------------------
// TextRendererクラス
//-------------------------------------------------------
TextRenderer.drawScreenBottomText= function(text, textui) {
		var range, range2;
		var x = LayoutControl.getCenterX(-1, UIFormat.SCREENFRAME_WIDTH);
		var color = textui.getColor();
		var font = textui.getFont();
		var pic = textui.getUIImage();
		var text1 = text;
		var text2 = null;
		
		// 00LanguageChange.jsを入れている場合は言語切替関数を呼び出して説明文を切り替える
		if( typeof GSTextChanger !== 'undefined' ) {
			text = GSTextChanger.getText(text);
		}
		
		// textの前の部分と後ろの部分を取り出す
		text1 = TextRenderer.splitText1(text);
		text2 = TextRenderer.splitText2(text);

		if (pic !== null) {
			pic.draw(x, root.getGameAreaHeight() - UIFormat.SCREENFRAME_HEIGHT);
			
			// textの後ろの部分がなければ一段表示
			if( text2 == null ) {
				range = createRangeObject(x + 65, root.getGameAreaHeight() - 58, UIFormat.SCREENFRAME_WIDTH - (65 * 2), 40);
				TextRenderer.drawRangeText(range, 1, text1, -1, color, font);
			}
			// textの後ろの部分があれば二段表示
			else {
				range = createRangeObject(x + 65, root.getGameAreaHeight() - 66, UIFormat.SCREENFRAME_WIDTH - (65 * 2), 40);
				TextRenderer.drawRangeText(range, 1, text1, -1, color, font);

				range2 = createRangeObject(x + 65, root.getGameAreaHeight() -50, UIFormat.SCREENFRAME_WIDTH - (65 * 2), 40);
				TextRenderer.drawRangeText(range2, 1, text2, -1, color, font);
			}
		}
}


// 立ち絵表示で使用するメソッド
TextRenderer.drawScreenBottomText2LineEx= function(text, textui, hosei_x, hosei_y, text_position) {
		// それ以外の場合（引数3個のケース）はこちらを通る(追加処理)
		var range, range2;
		var x = LayoutControl.getCenterX(-1, UIFormat.SCREENFRAME_WIDTH);
		var color = textui.getColor();
		var font = textui.getFont();
		var pic = textui.getUIImage();
		var text1 = text;
		var text2 = null;
		
		// 表示X座標を補正
		x += hosei_x;
		
		// textの前の部分と後ろの部分を取り出す
		text1 = TextRenderer.splitText1(text);
		text2 = TextRenderer.splitText2(text);

		if (pic !== null) {
			pic.draw(x, root.getGameAreaHeight() - UIFormat.SCREENFRAME_HEIGHT+ hosei_y);
			
			// textの後ろの部分がなければ一段表示
			if( text2 == null ) {
				range = createRangeObject(x + 65, root.getGameAreaHeight() - 58+ hosei_y, UIFormat.SCREENFRAME_WIDTH - (65 * 2), 40);
				TextRenderer.drawRangeText(range, text_position, text1, -1, color, font);
			}
			// textの後ろの部分があれば二段表示
			else {
				range = createRangeObject(x + 65, root.getGameAreaHeight() - 66+ hosei_y, UIFormat.SCREENFRAME_WIDTH - (65 * 2), 40);
				TextRenderer.drawRangeText(range, text_position, text1, -1, color, font);

				range2 = createRangeObject(x + 65, root.getGameAreaHeight() -50+ hosei_y, UIFormat.SCREENFRAME_WIDTH - (65 * 2), 40);
				TextRenderer.drawRangeText(range2, text_position, text2, -1, color, font);
			}
		}
}


// textの分割処理（前の部分の取り出し）
TextRenderer.splitText1= function(text) {
		var key = /\\br/;
		var idx = text.search(key);
		var retText = text;

		// 制御文字\brがあれば、retTextに\brより前を設定する
		if( idx != -1 ) {
			retText = text.slice(0,idx);
		}
		// textの文字数がMenuHelpOneLineLengthを超える場合、retTextにMenuHelpOneLineLength分を設定する
		else if( text.length > MenuHelpOneLineLength ) {
			retText = text.slice(0,MenuHelpOneLineLength);
		}

		return retText;
}


// textの分割処理（後ろの部分の取り出し）
TextRenderer.splitText2= function(text) {
		var key = /\\br/;
		var idx = text.search(key);
		var retText = null;

		// 制御文字\brがあれば、retTextに\brより後ろを設定する
		if( idx != -1 ) {
			text = text.replace(key, '');
			retText = text.slice(idx);
		}
		// textの文字数がMenuHelpOneLineLengthを超える場合、retTextにMenuHelpOneLineLengthより後ろを設定する
		else if( text.length > MenuHelpOneLineLength ) {
			retText = text.slice(MenuHelpOneLineLength);
		}

		return retText;
}


})();